# 14.1 极速升级
# 一、jfinal 3.0 之前版本的升级
jfinal 3.0 是大版本升级,此前版本升到 jfinal 3.0 请移步 14.2、14.3、14.4、14.5 小节,这几个小节中的内容极少,升级很方便。
# 二、jfinal 3.0 之后版本的升级
# 1、升级到 3.1
无需修改,平滑升级
# 2、升级到 3.2
IStringSource 更名为 ISource
按照 14.2 小节 升级 Ret
# 3、升级到 3.3
指令扩展中的 java.io.Writer 改为 com.jfinal.template.io.Writer,eclipse/IDEA 开发工具会主动给出提示
# 4、升级到 3.4
由于 Json 中的 defaultDatePattern 初始值由 null 改为 "yyyy-MM-dd HH:mm:ss",JFinalJson 中删掉 datePattern 属性,所以要在 configConstant(Constants me) 中配置:me.setJsonDatePattern(null) 或者具体值
# 5、升级到 3.5
ISource.getKey() 更名为 ISource.getCacheKey()
# 6、升级到 3.6
Db、Model 针对多主键(联合主键)的 findById、deleteById 方法添加一个 's' 后缀,改成 findByIds、deleteByIds
用到 jfinal weixin 项目的 MsgController 时,需要在 configRoutes 中配置 me.setMappingSuperClass(true)
由于 jfinal 3.6 用于 sql 管理的 Engine 对象,默认配置了 engine.setToClassPathSourceFactory(),engine 将从 class path 和 jar 包中加载 sql 文件,所以如果 sql 文件以往是存放在 src/main/webapp 的需要转移至 src/main/resources 之下。如果以往配置过 arp.setBaseSqlTemplatePath(...),需要删除该行代码,或改为适应于 ClassPathSourceFactory 的配置,参考:https://www.jfinal.com/doc/6-2
# 7、升级到 3.8
用到 Aop 配置方法的改为使用 AopManager,例如:Aop.addMapping(...) 改为 AopManager.me().addMapping(...)
# 8、升级到 4.0
无需修改,平滑升级
# 9、升级到 4.1
无需修改,平滑升级
# 10、升级到 4.2
无需修改,平滑升级
# 11、升级到 4.3
无需修改,平滑升级
# 12、升级到 4.4
无需修改,平滑升级
# 13、升级到 4.5
默认不支持直接访问 .jsp 文件,如果需要直接访问 .jsp 文件,需添加配置:me.setDenyAccessJsp(false);
# 14、升级到 4.6
无需修改,平滑升级
# 15、升级到 4.7
无需修改,平滑升级
# 16、升级到 4.8
jfinal 4.8 之前的 Controller.getPara(String) 方法,在有表单域存在的时候就不可能返回 null 值,而是返回了 "" 值。jfinal 4.8 版本将之修改为与其它 getXxx 系方法一样,将 "" 处理为 null 值。
需要快速升级老项目的同学,可以引入 BaseController 并使用老版本的实现
public class BaseController extends Controller {
public String getPara(String name) {
return getRequest().getParameter(name);
}
}
2
3
4
5
这个方法的具体改变细节见 gitee.com : https://gitee.com/jfinal/jfinal/commit/edfcc0015837ab0b1e6a1f980843ab88815ec1cd
# 17、升级到 4.9
jfinal 4.9 对 JFinalJson.java 进行了重构,如果以前的项目通过继承 JFinalJson 类做过扩展,需要注意扩展接口有所变动,具体可以参考一下源码中有关扩展的注释,新的扩展接口使用起来比以前要方便得多。
如果项目中使用了 fastjson,最低需要版本为 1.2.68(老版本的 fastjson 有安全隐患)。
如无上述情况可平滑升级。
# 17、升级到 4.9.01
无需修改,平滑升级
# 18、升级到 4.9.02
Engine 的 setWriterBufferSize(int) 更名为 setBufferSize(int)
# 19、升级到 4.9.03
无需修改,平滑升级
# 20、升级到 4.9.04
无需修改,平滑升级。该版本只修正了 com.jfinal.plugin.redis.Cache.hgetCounter(...) 中的一个 bug。
# 21、升级到 4.9.05
无需修改,平滑升级。该版本在 Model、Db 中新增了一个 each 方法,新增方法不影响升级
# 22、升级到 4.9.06
该版本的 MetaBuilder.filter(...) 方法更名为 skip,使用逻辑没有变化。一般很少人用到这个方法,只有用到过这个方法的人才需要修改代码,并且 eclipse、IDEA 开发工具会提示修改。
# 23、升级到 4.9.07
无需修改,平滑升级
# 24、升级到 4.9.08
无需修改,平滑升级
# 25、升级到 4.9.09
无需修改,平滑升级
# 26、升级到 4.9.10
无需修改,平滑升级
# 27、升级到 4.9.11
无需修改,平滑升级
# 28、升级到 4.9.12
不要使用这个版本,模板生成内容会多出一些空行,请使用后续版本
# 29、升级到 4.9.13
无需修改,平滑升级。
但要注意:由于 PathKit.getWebRootPath() 方法已经被改进,在标准的 maven 项目中已经可以正确获取到 web 根目录,所以将该方法用于 model、base model 生成器的代码注意要改一下,可以将 PathKit.getWebRootPath() 改成下面方式获取项目根目录:
System.getProperty("user.dir")
# 30、升级到 4.9.14
无需修改,平滑升级
# 31、升级到 4.9.15
无需修改,平滑升级。注意跨多版本升级要看看升级到 4.9.13 这一小节。
# 32、升级到 4.9.16
由于该版本升级了 Redis 插件所依赖的 jedis 与 fst,而 jedis 的 SafeEncoder 移动了目录,所以如果用到了 jfinal 的 Redis 插件的项目,需要将其 jedis 依赖升级到 3.6.3。
如果你想升级 fst,需要注意升级前存入 redis 中的数据无法被读取,因为新版本 fst 序列化/反序列算法不兼容老版本,简单的解决办法是清空 redis 数据重新写入,如果不方便清空可以先不升级 fst 而只升级 jedis。
# 33、升级到 4.9.17
无需修改,平滑升级。
# 34、升级到 4.9.18
如果用到文件上传 cos 依赖必须升级到 2022.2 版本,因为 getFile 方法的 int maxPostSize 改成了 long。不建议使用该版本,建议至少升级到 4.9.21。
注意:从本版本开始,后续版本文件上传依赖 cos 都要升级至少到 2022.2 版本(int maxPostSize 变量改为了 long 类型)
# 35、升级到 4.9.19
无需修改,平滑升级。不建议使用该版本,建议至少升级到 4.9.21。
# 36、升级到 4.9.20
Ret.create(Object,Object) 更名为 Ret.of(Object, Object),Ret.ok(Object, Object)、Ret.fail(Object, Object) 已被删除,可以使用 Ret.ok().set(Object, Object)、Ret.fail().set(Object, Object) 替代。不建议使用该版本,建议至少升级到 4.9.21。
# 37、升级到 4.9.21
为保持兼容性,恢复了上一版本 4.9.20 中删掉的 Ret.ok(Object, Object)、Ret.fail(Object, Object) 两个方法。
相对于 4.9.18 以及更早版本,升级到本版本,需要改变的是 Ret.create(key, value) 改为 Ret.of(key, value),以及 cos 升级到 2022.2,其它不用动。
注意:不建议使用 4.9.18、4.9.19、4.9.20,而是直接使用 4.9.21,因为该版本针对前面三个版本进行了完善并且兼容老项目,属于本轮迭代的最终版。
# 38、升级到 5.0.0
无需修改,平滑升级。
# 39、升级到 5.0.1
无需修改,平滑升级。
# 40、升级到 5.0.2
Enjoy 模板引擎的静态方法调用与静态属性访问表达式默认值改为了 "不开启",如果用到这两类表达式,需要通过如下配置开启:
// 以下配置支持静态方法调用表达式:com.jfinal.kit.StrKit::isBlank('abc')
engine.setStaticMethodExpression(true);
// 以下配置支持静态属性访问表达式:com.jfinal.core.Constant::JFINAL_VERSION
engine.setStaticFieldExpression(true);
2
3
4
5
# 41、升级到 5.0.3
无需修改,平滑升级。
# 42、升级到 5.0.4
无需修改,平滑升级。
# 43、升级到 5.0.5
无需修改,平滑升级。
# 44、升级到 5.0.6
之前 5.0.3 版本 Redis 插件新增的分布式锁 lock(...)、withLock(...) 中的 timeOut 参数单位由 "毫秒" 改为了 "秒"。如果是 5.0.3 之前版本升级不必关心,因为5.0.3版本之前还未提供过这个方法。
# 45、升级到 5.0.7
无需修改,平滑升级。
# 46、升级到 5.0.8
无需修改,平滑升级。
# 47、升级到 5.0.8
无需修改,平滑升级。
# 48、升级到 5.0.9
无需修改,平滑升级。
# 49、升级到 5.1.0
无需修改,平滑升级。
# 50、升级到 5.1.1
无需修改,平滑升级。
# 51、升级到 5.1.2
ScheduledKit 带有 Runnable/Callable 参数的方法其 Runnable/Callable 参数挪到了最后一个位置。